iT邦幫忙

2023 iThome 鐵人賽

DAY 6
1
Cloud Native

【하나, 둘, ready, get set, go】系列 第 6

【하나, 둘, ready, get set, go】Day 6 - for 迴圈

  • 分享至 

  • xImage
  •  

前情提要

我們在前一天介紹了 Go 的 if else 跟 switch case

今天要介紹的是每個程式語言基本必備的迴圈,我們就直接來看吧

計數器

首先是計數器,最常見的應用之一,語法跟其他程式語言的基本上相同

for 變數; 執行條件; 遞增值 {
  // 要做的事
}

實際範例如下,用 for 迴圈 print 出 0~9

package main

import "fmt"

func main() {
  for i:= 0; i < 10; i++ {
    fmt.Println(i)
  }
}

/* 實際輸出結果
0
1
2
3
4
5
6
7
8
9
*/

break、continue

在迴圈中有時會使用 breakcontinue 來進行相關操作

實際用起來的話,就會像下面這樣

當加總 (sum) 超過 20 時,輸出現在的 i 值,並跳脫結束迴圈 (break)

package main

import "fmt"

func main() {
  sum := 0
  for i:= 0; i < 10; i++ {
    sum += i
    if sum > 20 {
      fmt.Println(i)
      break
    }
  }
}

/* 實際輸出結果
6
*/

當 i 能被 2 整除的話,就直接跳脫當前迴圈,到下一個迴圈迭代 (continue),否則就輸出目前的 i 值

package main

import "fmt"

func main() {
  for i:= 0; i < 10; i++ {
    if i % 2 == 0 {
      continue
    }
    fmt.Println(i)
  }
}

/* 實際輸出結果
1
3
5
7
9
*/

while 用法

而「變數宣告」跟「遞增值」這兩個是可選的,也就是不一定要寫

用上面範例來改寫的話,就會變成下面這樣,輸出結果不變

看起來是不是很像其他語言的 while 呢~沒錯這就是 Go 的 while 寫法

package main

import "fmt"

func main() {
  i := 0
  for i < 10 {
    fmt.Println(i)
    i++
  }
}

/* 實際輸出結果
0
1
2
3
4
5
6
7
8
9
*/

無限迴圈

Go 要寫無限迴圈的話,也很簡單,只要把條件拿掉就好了,像是下面這樣

for {
  // 無限迴圈內要做的事
}

迭代/遍歷

如果要對 Collection 進行迭代/遍歷,可以透過 range 這個保留字

實際用法如下

package main

import "fmt"

func main() {
  ary := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
  for index, value := range ary {
    fmt.Printf("index %d,value %d\n", index, value)
  }
}

/* 實際輸出結果
index 0,value 0
index 1,value 1
index 2,value 2
index 3,value 3
index 4,value 4
index 5,value 5
index 6,value 6
index 7,value 7
index 8,value 8
index 9,value 9
*/

如果不需要迭代/遍歷時的 index,也可以用 _ 取代,像是下面這樣

package main

import "fmt"

func main() {
  ary := []int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
  for _, value := range ary {
    fmt.Printf("value %d\n", value)
  }
}

總結

今天簡單介紹了 Go 的 for 迴圈用法

下一篇會來介紹 Array、Slices 的用法

明天見~


上一篇
【하나, 둘, ready, get set, go】Day 5 - if else、switch case
下一篇
【하나, 둘, ready, get set, go】Day 7 - Array、slices
系列文
【하나, 둘, ready, get set, go】30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言